Virtualization technologies are becoming prevalent in the market place. At least some of these technologies provide a virtual hardware abstraction to guest operating systems, and allow them to run in virtual machines in a functionally isolated environment on a host computer without being modified. Virtualization allows one or more virtual (guest) machines to run on a single physical (host) computer, providing functional and performance isolation for processor, memory, storage, etc. Virtual computers and systems are discussed below in the Appendix in conjunction with FIG. 1.
Like physical machines, virtual machines have storage media such as hard disks (virtual hard disks, in the case of virtual machines), along with other peripheral devices. Typically, a virtual machine's virtual hard disk is used to store the guest operating system, application programs and application data.
It is sometimes desirable for users to maintain multiple copies of a single virtual disk on one or more physical machines. For example, a user might want to keep a back up copy of a virtual disk on a second hard drive of a physical machine on which a virtual machine runs, or on a separate physical machine. A user may also wish to run multiple copies of the same virtual machine on a single physical machine, or on multiple physical machines, for example both a physical desktop computer in the office, and on a physical laptop used when traveling.
Whenever a user maintains multiple copies of the same virtual disk, s/he likely wants to be able to have that same virtual disk available without needing to copy a large amount of data between physical media or computers. The user would like simply to be able to automatically synchronize the copies of the virtual disk. The user is interested in having copies of the same virtual disk at multiple locations, not multiple instances of the same virtual machine.
So long as the physical computer(s) involved have virtualization technology that allows operation of virtual machines, copies of the same virtual disk can be maintained at multiple locations. However, when a specific copy of a virtual disk is updated (for example by an associated copy of a virtual machine running on a physical machine and accessing the virtual disk), that copy of the virtual disk will contain updates that are not present on the other copies. Thus, in order to maintain multiple copies of the same virtual disk, the copies of the virtual disk should be synchronized between access sessions.